<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        function getJSON(url){
            const xhr=new XMLHttpRequest();
            xhr.open("GET",url,true);
            xhr.send();
            // 返回Promise 示例 ，Promise 类里定义了then方法
            return new Promise((resolve,reject)=>{
                // executor 执行器函数 同步
                // 将耗时性的异步任务放在里面
                xhr.onreadystatechange = function() {
                    if (xhr.readyState === 4) {
                        if (xhr.status === 200) {
                            // 数据 xhr/fetch 数据交换的格式 JSON -->
                            resolve(JSON.parse(xhr.responseText));//成功
                        } else {
                            reject(new Error(xhr.statusText));//失败
                        }
                    }
                }
                xhr.onerror=function(){
                    reject(new Error("网络错误"));//失败
                }
            })
        }
        // promise 是es6提供的异步编程解决方案，优于回调函数
        // promise 示例 then
        getJSON("https://jsonplaceholder.typicode.com/users")
        .then(data=>{
            console.log(data);
        })
        .catch(err=>{
            console.log(err);
        })
    </script>
</body>
</html>